Step Functionsの開発がVSCodeで完結!?AWS ToolkitでStep Functionsがサポートされました
環境
- Visual Studio Code Version … 1.43.2
- AWS Toolkit Version … 1.8.0
前提
本エントリではAWS Toolkitのインストール等を割愛していますので、以下が前提となります。
やってみた
ステートマシン定義
VSCodeのコマンドパレットにてAWS: Create a new Step Functions state machine
を選択します。
AWS Toolkitにて用意されたテンプレートが表示されます。ここではHello world
を選択します。
Pass
、Choice
などのステートを含んだテンプレートが作成されます。VSCode上のStep Functionsのアイコン(Render state machine graph)をクリックするとワークフローが表示できます。
定義ファイルに名前をつけて保存します。保存後はStep Functionsのアイコンが消えワークフローの表示がなくなりました。コマンドパレットにてAWS: Render state machine graph
を選択すると、ワークフローの表示が可能です。
ステートマシン作成
AWS Toolkitと接続したAWSアカウントに、ステートマシンを作成してみたいと思います。コマンドパレットAWS: Publish state machine to Step Functions
を選択します。
Quick Create
を選択します。
ステートマシンにアタッチするIAMロールを選択します。なお、AWS ToolkiがAWSアカウントに接続できていない場合や、StepFunctions用のIAMロールが作成されていない場合は、ロールが表示されないのでご注意ください。
任意のステートマシン名を入力し、Enterをクリックします。
ステートマシンの作成が行われ、VSCodeの出力に作成状況が表示されます。
VSCodeのターミナルより、AWS CLIを利用し作成状況を確認してみます。以下コマンドを実行します。指定するステートマシンのARNについては、作成時の出力に表示されています。
aws stepfunctions describe-state-machine --state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloworldStateMachine
ステートマシンの定義が表示され、作成されている事が確認できました。
AWS Toolkitのエクスプローラー(AWS:EXPLORER)でも作成状況が確認できます。更新(Refresh AWS EXPLORER)を行うことで、作成したステートマシンを確認することができました。
ステートマシン実行
ステートマシンの実行前に、実行状況をリストしてみたいと思います。VSCodeのターミナルより、以下コマンドを実行します。
aws stepfunctions list-executions --state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloworldStateMachine
まだ実行をしていませんので、想定どおり実行結果はありません。
それでは実行してみたいと思います。AWS CLIにて実行することもできますが、ここではAWS Toolkitのエクスプローラーから実行してみたいと思います。該当のステートマシンを選択し、右クリック「Staart Execution」をクリックします。
別タブが開き、実行時のインプットを指定することが可能です。
ここでは、以下のインプットを行い「Execute」をクリックします。
{ "IsHelloWorldExample": true }
VSCodeの出力に実行IDが表示されました。
実行状況をリストしてみたいと思います。VSCodeのターミナルより、ステートマシンのARNを指定した、以下のコマンドを実行します。
aws stepfunctions list-executions --state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloworldStateMachine
実行結果よりステートマシン実行の成功が確認できました。
describe-execution
コマンドでは、実行時のINPUT、OUTPUTなども確認できます。
ステートマシン更新
ステートマシンを更新してみたいと思います。更新状況が確認できるように、ワークフローを表示させておきます。
以下の定義に更新しました。
{ "Comment": "A Hello World example demonstrating various state types of the Amazon States Language", "StartAt": "Pass", "States": { "Pass": { "Comment": "A Pass state passes its input to its output, without performing work. Pass states are useful when constructing and debugging state machines.", "Type": "Pass", "End": true } } }
ワークフローがホットリロードされ、更新後の状態をすぐに確認できました。
変更内容をStep Functionsに反映したいと思います。コマンドパレットにてAWS: Publish state machine to Step Functions
を選択します。
Quick Update
を選択します。
更新を行うステートマシンを選択します。
VSCodeの出力より更新状況が確認できます。
VSCodeのターミナルより、以下コマンドを実行し、ステートマシンの定義を確認してみます。
aws stepfunctions describe-state-machine --state-machine-arn arn:aws:states:ap-northeast-1:XXXXXXXXXXXX:stateMachine:HelloworldStateMachine
定義が更新されていることが確認できました。
さいごに
AWSマネジメントコンソールではステートマシンの定義を都度保存して、ワークフローの確認を行う必要がありますが、AWS Toolkitでは、定義を更新しながらワークフローの確認が行えました。今回は触れませんでしたが、ステートのスニペットを利用することもできます。Step Functionsがサポートされたことにより、VSCodeを離れることなくステートマシンの作成(更新)から実行まで行え、作業が捗りそうですね!